# python中的类定义
# 类属性，初始化方法 ， 实例方法，类方法，静态方法

class Student:
    classAtrri = "aa"    # 类属性

    def __init__(self , name, age): # 初始化方法
        print(f"__init__ ,  name: {name},  age: {age}")
        self.studentName = name  # studentName 实例属性
        self.studentAge = age  # studentAge 实例属性

    # 实例方法
    def eat(self):
        print("---------eat----------")

    #类方法
    @classmethod
    def run(cls):
        print("------------run-------------")

    # 静态方法
    @staticmethod
    def sleep():
        print("---------sleep----------")



# 创建对象
stu1 = Student("AAA" , 30)
print(f"stu1: {id(stu1)}")
print(stu1.studentName)
stu1.eat()
Student.eat(stu1)

stu1.sleep()
Student.sleep()

stu1.run()
Student.run()


# 动态绑定属性, 动态绑定的属性只属于该实例对象
stu1.gender = "男"
stu2 = Student("BBBB" , 23)
print(f"stu1: {stu1.gender}")
# print(f"stu2: {stu2.gender}")   # 因为gender 只绑定在了stu1上面，所以stu2上面是没有gender属性的

# 动态绑定方法，逻辑上和绑定属性是一样的，动态绑定的方法只属于被绑定的对象上

def show():
    print("--------show-------")
stu1.showInfo = show   # 动态为队形stu1绑定上showInfo方法，showInfo方法的执行函数是show()
stu1.showInfo()


# python 中的私有属性和方法，是由两个"__"(下划线)开头的：




